import axios from 'axios';
import type { RouteRecordNormalized } from 'vue-router';
import { UserState } from '@/store/modules/user/types';

export interface LoginData {
  username: string;
  password: string;
}

export interface LoginRes {
  token: string;
}

export function login(data: LoginData) {
  // 打印完整的请求地址
  const baseURL = axios.defaults.baseURL || '';
  const fullURL = baseURL + '/api/user/login';
  console.log('登录请求完整地址:', fullURL);
  console.log('当前页面URL:', window.location.href);
  console.log('axios默认配置:', axios.defaults);
  
  return axios.post<LoginRes>('/api/user/login', data);
}

export function logout() {
  return axios.post<LoginRes>('/api/user/logout');
}

export function getUserInfo() {
  return axios.post<UserState>('/api/user/info');
}

export function getMenuList() {
  console.log('开始获取菜单数据');
  const baseURL = axios.defaults.baseURL || '';
  const fullURL = baseURL + '/api/menu/user';
  console.log('获取菜单请求地址:', fullURL);
  console.log('当前页面URL:', window.location.href);
  
  return axios.post('/api/menu/user')
    .then(response => {
      console.log('菜单API响应:', {
        状态码: response.status,
        响应头: response.headers,
        原始响应: response.data,
        数据类型: typeof response.data,
        是否数组: Array.isArray(response.data),
        数据长度: Array.isArray(response.data) ? response.data.length : '不是数组'
      });
      console.log('菜单接口返回数据:', {
        状态码: response.status,
        消息: response.statusText,
        数据: response.data,
        详细数据: JSON.stringify(response.data, null, 2)
      });
      return response;
    })
    .catch(error => {
      console.error('获取菜单请求失败:', {
        错误信息: error.message,
        响应状态: error.response?.status,
        响应数据: error.response?.data
      });
      console.error('获取菜单数据失败:', error);
      return Promise.reject(error);
    });
}
